package sii.challenge.main;

import sii.challenge.gestoreratings.GestoreRatings;
import sii.challenge.modello.Rating;

/** Classe Controller che ha la responsabilita' di invocare il GestoreRating e chiederne il calcolo
 * della predizione tramite i parametri idUtente, idProfile.
 * @author dario, francesco
 *
 */
public class MainController {

	/** Variabile per il gestore Ratings. */
	GestoreRatings gestore_ratings;
	
	/** Il riferimento all'istanza singleton di ControllerMain. */
	private static MainController instance;
	
	
	/** Restituisce il riferimento all'istanza singleton di ControllerMain.  */
	public static synchronized MainController getInstance() {
		// se non esiste, allora crea l'istanza singleton di ControllerMain.
		if (instance == null) {
			try {
				instance = new MainController();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return instance;
	}
	
	/** Costruttore. 
	 * @throws Exception */
	private MainController() throws Exception {
		gestore_ratings = new GestoreRatings();
	}
		
	/** Invoca il gestoreRating e chiede il rating predetto User-Item based. */
	public Rating getRatingPredettoUserItemCombined(int idUtente, int idProfile) {
		return gestore_ratings.getRatingPredettoUserItemCombined(idUtente, idProfile);
	}
	
}
